#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source.  A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#

#
# Copyright 2022 Oxide Computer Company
#

#
# Definitions found in sys/atomic.h. Note, this is a non-standard header
# so including it means that everything will always be visible. This is
# included as part of regression tests for #14329. We are currently
# assuming the following here:
#
#  o _ASM_INLINES is not defined (this is generally only used in the
#    kernel)
#

#
# Types
#

#
# Values.
#

#
# Defines
#

#
# Functions
#
func | atomic_inc_8					|\
	void						|\
	volatile uint8_t *				|\
	sys/atomic.h | +ALL

func | atomic_inc_uchar					|\
	void						|\
	volatile uchar_t *				|\
	sys/atomic.h | +ALL

func | atomic_inc_16					|\
	void						|\
	volatile uint16_t *				|\
	sys/atomic.h | +ALL

func | atomic_inc_ushort				|\
	void						|\
	volatile ushort_t *				|\
	sys/atomic.h | +ALL

func | atomic_inc_32					|\
	void						|\
	volatile uint32_t *				|\
	sys/atomic.h | +ALL

func | atomic_inc_uint					|\
	void						|\
	volatile uint_t *				|\
	sys/atomic.h | +ALL

func | atomic_inc_ulong					|\
	void						|\
	volatile ulong_t *				|\
	sys/atomic.h | +ALL

func | atomic_inc_64					|\
	void						|\
	volatile uint64_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_8					|\
	void						|\
	volatile uint8_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_uchar					|\
	void						|\
	volatile uchar_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_16					|\
	void						|\
	volatile uint16_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_ushort				|\
	void						|\
	volatile ushort_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_32					|\
	void						|\
	volatile uint32_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_uint					|\
	void						|\
	volatile uint_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_ulong					|\
	void						|\
	volatile ulong_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_64					|\
	void						|\
	volatile uint64_t *				|\
	sys/atomic.h | +ALL

func | atomic_add_8					|\
	void						|\
	volatile uint8_t *; int8_t			|\
	sys/atomic.h | +ALL

func | atomic_add_char					|\
	void						|\
	volatile uchar_t *; signed char			|\
	sys/atomic.h | +ALL

func | atomic_add_16					|\
	void						|\
	volatile uint16_t *; int16_t			|\
	sys/atomic.h | +ALL

func | atomic_add_short					|\
	void						|\
	volatile ushort_t *; short			|\
	sys/atomic.h | +ALL

func | atomic_add_32					|\
	void						|\
	volatile uint32_t *; int32_t			|\
	sys/atomic.h | +ALL

func | atomic_add_int					|\
	void						|\
	volatile uint_t *; int				|\
	sys/atomic.h | +ALL

func | atomic_add_ptr					|\
	void						|\
	volatile void *; ssize_t			|\
	sys/atomic.h | +ALL

func | atomic_add_long					|\
	void						|\
	volatile ulong_t *; long			|\
	sys/atomic.h | +ALL

func | atomic_add_64					|\
	void						|\
	volatile uint64_t *; int64_t			|\
	sys/atomic.h | +ALL

func | atomic_or_8					|\
	void						|\
	volatile uint8_t *; uint8_t			|\
	sys/atomic.h | +ALL

func | atomic_or_uchar					|\
	void						|\
	volatile uchar_t *; uchar_t			|\
	sys/atomic.h | +ALL

func | atomic_or_16					|\
	void						|\
	volatile uint16_t *; uint16_t			|\
	sys/atomic.h | +ALL

func | atomic_or_ushort					|\
	void						|\
	volatile ushort_t *; ushort_t			|\
	sys/atomic.h | +ALL

func | atomic_or_32					|\
	void						|\
	volatile uint32_t *; uint32_t			|\
	sys/atomic.h | +ALL

func | atomic_or_uint					|\
	void						|\
	volatile uint_t *; uint_t			|\
	sys/atomic.h | +ALL

func | atomic_or_ulong					|\
	void						|\
	volatile ulong_t *; ulong_t			|\
	sys/atomic.h | +ALL

func | atomic_or_64					|\
	void						|\
	volatile uint64_t *; uint64_t			|\
	sys/atomic.h | +ALL

func | atomic_and_8					|\
	void						|\
	volatile uint8_t *; uint8_t			|\
	sys/atomic.h | +ALL

func | atomic_and_uchar					|\
	void						|\
	volatile uchar_t *; uchar_t			|\
	sys/atomic.h | +ALL

func | atomic_and_16					|\
	void						|\
	volatile uint16_t *; uint16_t			|\
	sys/atomic.h | +ALL

func | atomic_and_ushort				|\
	void						|\
	volatile ushort_t *; ushort_t			|\
	sys/atomic.h | +ALL

func | atomic_and_32					|\
	void						|\
	volatile uint32_t *; uint32_t			|\
	sys/atomic.h | +ALL

func | atomic_and_uint					|\
	void						|\
	volatile uint_t *; uint_t			|\
	sys/atomic.h | +ALL

func | atomic_and_ulong					|\
	void						|\
	volatile ulong_t *; ulong_t			|\
	sys/atomic.h | +ALL

func | atomic_and_64					|\
	void						|\
	volatile uint64_t *; uint64_t			|\
	sys/atomic.h | +ALL

func | atomic_inc_8_nv					|\
	uint8_t						|\
	volatile uint8_t *				|\
	sys/atomic.h | +ALL

func | atomic_inc_uchar_nv				|\
	uchar_t						|\
	volatile uchar_t *				|\
	sys/atomic.h | +ALL

func | atomic_inc_16_nv					|\
	uint16_t					|\
	volatile uint16_t *				|\
	sys/atomic.h | +ALL

func | atomic_inc_ushort_nv				|\
	ushort_t					|\
	volatile ushort_t *				|\
	sys/atomic.h | +ALL

func | atomic_inc_32_nv					|\
	uint32_t					|\
	volatile uint32_t *				|\
	sys/atomic.h | +ALL

func | atomic_inc_uint_nv				|\
	uint_t						|\
	volatile uint_t *				|\
	sys/atomic.h | +ALL

func | atomic_inc_ulong_nv				|\
	ulong_t						|\
	volatile ulong_t *				|\
	sys/atomic.h | +ALL

func | atomic_inc_64_nv					|\
	uint64_t					|\
	volatile uint64_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_8_nv					|\
	uint8_t						|\
	volatile uint8_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_uchar_nv				|\
	uchar_t						|\
	volatile uchar_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_16_nv					|\
	uint16_t					|\
	volatile uint16_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_ushort_nv				|\
	ushort_t					|\
	volatile ushort_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_32_nv					|\
	uint32_t					|\
	volatile uint32_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_uint_nv				|\
	uint_t						|\
	volatile uint_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_ulong_nv				|\
	ulong_t						|\
	volatile ulong_t *				|\
	sys/atomic.h | +ALL

func | atomic_dec_64_nv					|\
	uint64_t					|\
	volatile uint64_t *				|\
	sys/atomic.h | +ALL

func | atomic_add_8_nv					|\
	uint8_t						|\
	volatile uint8_t *; int8_t			|\
	sys/atomic.h | +ALL

func | atomic_add_char_nv				|\
	uchar_t						|\
	volatile uchar_t *; signed char			|\
	sys/atomic.h | +ALL

func | atomic_add_16_nv					|\
	uint16_t					|\
	volatile uint16_t *; int16_t			|\
	sys/atomic.h | +ALL

func | atomic_add_short_nv				|\
	ushort_t					|\
	volatile ushort_t *; short			|\
	sys/atomic.h | +ALL

func | atomic_add_32_nv					|\
	uint32_t					|\
	volatile uint32_t *; int32_t			|\
	sys/atomic.h | +ALL

func | atomic_add_int_nv				|\
	uint_t						|\
	volatile uint_t *; int				|\
	sys/atomic.h | +ALL

func | atomic_add_ptr_nv				|\
	void *						|\
	volatile void *; ssize_t			|\
	sys/atomic.h | +ALL

func | atomic_add_long_nv				|\
	ulong_t						|\
	volatile ulong_t *; long			|\
	sys/atomic.h | +ALL

func | atomic_add_64_nv					|\
	uint64_t					|\
	volatile uint64_t *; int64_t			|\
	sys/atomic.h | +ALL

func | atomic_or_8_nv					|\
	uint8_t						|\
	volatile uint8_t *; uint8_t			|\
	sys/atomic.h | +ALL

func | atomic_or_uchar_nv				|\
	uchar_t						|\
	volatile uchar_t *; uchar_t			|\
	sys/atomic.h | +ALL

func | atomic_or_16_nv					|\
	uint16_t					|\
	volatile uint16_t *; uint16_t			|\
	sys/atomic.h | +ALL

func | atomic_or_ushort_nv				|\
	ushort_t					|\
	volatile ushort_t *; ushort_t			|\
	sys/atomic.h | +ALL

func | atomic_or_32_nv					|\
	uint32_t					|\
	volatile uint32_t *; uint32_t			|\
	sys/atomic.h | +ALL

func | atomic_or_uint_nv				|\
	uint_t						|\
	volatile uint_t *; uint_t			|\
	sys/atomic.h | +ALL

func | atomic_or_ulong_nv				|\
	ulong_t						|\
	volatile ulong_t *; ulong_t			|\
	sys/atomic.h | +ALL

func | atomic_or_64_nv					|\
	uint64_t					|\
	volatile uint64_t *; uint64_t			|\
	sys/atomic.h | +ALL

func | atomic_and_8_nv					|\
	uint8_t						|\
	volatile uint8_t *; uint8_t			|\
	sys/atomic.h | +ALL

func | atomic_and_uchar_nv				|\
	uchar_t						|\
	volatile uchar_t *; uchar_t			|\
	sys/atomic.h | +ALL

func | atomic_and_16_nv					|\
	uint16_t					|\
	volatile uint16_t *; uint16_t			|\
	sys/atomic.h | +ALL

func | atomic_and_ushort_nv				|\
	ushort_t					|\
	volatile ushort_t *; ushort_t			|\
	sys/atomic.h | +ALL

func | atomic_and_32_nv					|\
	uint32_t					|\
	volatile uint32_t *; uint32_t			|\
	sys/atomic.h | +ALL

func | atomic_and_uint_nv				|\
	uint_t						|\
	volatile uint_t *; uint_t			|\
	sys/atomic.h | +ALL

func | atomic_and_ulong_nv				|\
	ulong_t						|\
	volatile ulong_t *; ulong_t			|\
	sys/atomic.h | +ALL

func | atomic_and_64_nv					|\
	uint64_t					|\
	volatile uint64_t *; uint64_t			|\
	sys/atomic.h | +ALL

func | atomic_cas_8					|\
	void						|\
	volatile uint8_t *; uint8_t; uint8_t		|\
	sys/atomic.h | +ALL

func | atomic_cas_uchar					|\
	void						|\
	volatile uchar_t *; uchar_t; uchar_t		|\
	sys/atomic.h | +ALL

func | atomic_cas_16					|\
	void						|\
	volatile uint16_t *; uint16_t; uint16_t		|\
	sys/atomic.h | +ALL

func | atomic_cas_ushort				|\
	void						|\
	volatile ushort_t *; ushort_t; ushort_t		|\
	sys/atomic.h | +ALL

func | atomic_cas_32					|\
	void						|\
	volatile uint32_t *; uint32_t; uint32_t		|\
	sys/atomic.h | +ALL

func | atomic_cas_uint					|\
	void						|\
	volatile uint_t *; uint_t; uint_t		|\
	sys/atomic.h | +ALL

func | atomic_cas_ptr					|\
	void						|\
	volatile void *; void *; void *			|\
	sys/atomic.h | +ALL

func | atomic_cas_ulong					|\
	void						|\
	volatile ulong_t *; ulong_t; ulong_t		|\
	sys/atomic.h | +ALL

func | atomic_cas_64					|\
	void						|\
	volatile uint64_t *; uint64_t; uint64_t		|\
	sys/atomic.h | +ALL

func | atomic_swap_8					|\
	void						|\
	volatile uint8_t *; uint8_t			|\
	sys/atomic.h | +ALL

func | atomic_swap_uchar				|\
	void						|\
	volatile uchar_t *; uchar_t			|\
	sys/atomic.h | +ALL

func | atomic_swap_16					|\
	void						|\
	volatile uint16_t *; uint16_t			|\
	sys/atomic.h | +ALL

func | atomic_swap_ushort				|\
	void						|\
	volatile ushort_t *; ushort_t			|\
	sys/atomic.h | +ALL

func | atomic_swap_32					|\
	void						|\
	volatile uint32_t *; uint32_t			|\
	sys/atomic.h | +ALL

func | atomic_swap_uint					|\
	void						|\
	volatile uint_t *; uint_t			|\
	sys/atomic.h | +ALL

func | atomic_swap_ptr					|\
	void						|\
	volatile void *; void *				|\
	sys/atomic.h | +ALL

func | atomic_swap_ulong				|\
	void						|\
	volatile ulong_t *; ulong_t			|\
	sys/atomic.h | +ALL

func | atomic_swap_64					|\
	void						|\
	volatile uint64_t *; uint64_t			|\
	sys/atomic.h | +ALL

func | atomic_set_long_excl				|\
	int						|\
	volatile ulong_t *; uint_t			|\
	sys/atomic.h | +ALL

func | atomic_clear_long_excl				|\
	int						|\
	volatile ulong_t *; uint_t			|\
	sys/atomic.h | +ALL

func | membar_enter					|\
	void						|\
	void						|\
	sys/atomic.h | +ALL

func | membar_exit					|\
	void						|\
	void						|\
	sys/atomic.h | +ALL

func | membar_producer					|\
	void						|\
	void						|\
	sys/atomic.h | +ALL

func | membar_consumer					|\
	void						|\
	void						|\
	sys/atomic.h | +ALL
